/*
 * @lc app=leetcode.cn id=202 lang=javascript
 *
 * [202] 快乐数
 */

// @lc code=start
/**
 * @param {number} n
 * @return {boolean}
 */
// 快慢指针,判断有环链表
var isHappy = function(n) {
  const getNext = function (n) {
    n = '' + n
    let res = 0
    for (let i = 0; i < n.length; i++) {
      res += Math.pow(n[i], 2)
    }
    return res
  }
  let slow = n
  let fast = getNext(n)
  while (slow !== 1 && fast !== 1) {
    slow = getNext(slow)
    fast = getNext(getNext(fast))
  }
}
// @lc code=end

// 用hash存每一次结果
// 如果出现重复那么就为false
// var isHappy = function(n) {
//   let set = new Set()
//   n = '' + n
//   while (true) {
//     let res = 0
//     for (let i = 0; i < n.length; i++) {
//       res += Math.pow(n[i], 2)
//     }
//     if (res !== 1) {
//       if (set.has(res)) return false
//       set.add(res)
//       n = '' + res
//     } else {
//       return true
//     }
//   }
// };